package com.adee.design.structure.decoration;

/*
* 装饰者模式
* 类似于静态代理模式
* 构成要素：
        抽象构件
        具体构件
        构件装饰者（实现抽象构件接口）
* */
public class Test {
    public static void main(String[] args) {

    }

    // 抽象构件
    interface IComponent {
        void simpleOperation();
    }

    // 具体构件
    static class ConcreteComponent implements IComponent {
        @Override
        public void simpleOperation() {
            System.out.println("ConcreteComponent.simpleOperation()");
        }
    }

    // 抽象构件装饰者（实现抽象构件接口）
    static abstract class ComponentWrapper implements IComponent {
        private IComponent component;
        public ComponentWrapper(IComponent c) {
            component = c;
        }
        @Override
        public void simpleOperation() {
            System.out.println("ComponentWrapper.simpleOperation()");
            component.simpleOperation();
        }
    }
}
